import React, { useEffect, useRef } from "react";

const useDebounce = (callBack, delay) => {
  //创建一个ref对象，用来存储定时器
  const timer = useRef(null);

  //在组件卸载的时候，清除定时器
  useEffect(() => {
    return () => {
      if (timer.current) {
        clearTimeout(timer.current);
      }
    };
  });

  //返回一个函数，用来执行回调
  return (...arg) => {
    //清除之前的定时器
    if (timer.current) {
      clearTimeout(timer.current);
    }
    //创建一个新的定时器
    timer.current = setTimeout(() => {
      //执行回调函数,传入参数
      callBack(...arg);
    }, delay);
  };
};

export default useDebounce;
